package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.bo.PlatformCommissionOrderItemBO;
import com.yami.shop.bean.model.Blockchain;
import com.yami.shop.bean.model.Brand;
import com.yami.shop.bean.model.Category;
import com.yami.shop.bean.vo.BlockchainInfoVo;
import com.yami.shop.bean.vo.BlockchainVo;
import com.yami.shop.bean.vo.BrandSigningVO;
import com.yami.shop.bean.vo.CategoryVO;
import com.yami.shop.common.util.PageParam;

import java.util.List;
import java.util.Set;

/**
 * 链平台管理
 * @author yami
 */
public interface BlockchainService extends IService<Blockchain> {

    /**
     * 保存链平台
     * @param blockchain 链平台信息
     */
    void saveBlockchain(Blockchain blockchain);

    /**
     * 修改链平台
     * @param blockchain 链平台信息
     */
    void updateBlockchain(Blockchain blockchain);

    /**
     * 删除链平台
     * @param blockchain 链平台信息
     */
    void deleteBlockchain(Blockchain blockchain);

    /**
     * 根据名称查找名称相同的链平台数量，如果设置了Blockchain_id参数，则等于Blockchain_id等于该参数的链平台不参与运算
     * @param blockchain 链平台查找参数
     * @return 相同名称的数量
     */
    Integer getBlockchainName(Blockchain blockchain);

    /**
     * 根据链平台ID获取链平台
     * @param blockchainId 链平台ID
     * @return 链平台信息
     */
    Blockchain getBlockchainByBlockchainId(Long blockchainId);

    /**
     * 分页 - 根据链平台查找条件参数查找链平台列表
     * @param page 分页参数
     * @param blockchain 链平台查找条件
     * @return
     */
    IPage<Blockchain> pageCategoryLangList(PageParam<Blockchain> page, Blockchain blockchain);

    /**
     * 更新链平台状态（启用或禁用）
     * @param blockchain
     * @return
     */
    List<Long> updateBlockchainStatus(Blockchain blockchain);

    /**
     * 获取链平台列表
     * @param blockchain
     * @return
     */
    List<Blockchain> listByParams(Blockchain blockchain);

    Blockchain getInfoByCode(String code);

    /**
     * 根据店铺id 查询已签约的链
     * @param shopId
     */
    List<BlockchainInfoVo> listbyshopId(Long shopId);
}
